/*!
 @header   NSMutableArray 分类
 @abstract 对NSMutableArray类的扩展
 @author zhuluran
 @version 1.0 2015/06/17 Create
 */

#import <Foundation/Foundation.h>

/*!
 NSMutableArray的分类
 */
@interface NSMutableArray (Extension)

/*!
 @method
 @abstract 添加一个对象到数组
 @discussion 添加一个对象到数组

 @param object被添加的对象
 */
- (void)push:(id)object;

/*!
 @method
 @abstract 取得数组末尾对象，然后将数组末尾的对象移除
 @discussion 取得数组末尾对象，将数组末尾的对象移除
 
 @return 数组末尾对象
 */
- (id)pop;

/*!
 @method
 @abstract 取得数组末尾一定数量的对象，然后将这些对象从数组中移除
 @discussion 取得数组末尾一定数量的对象，然后将这些对象从数组中移除
 
 @param numberOfElements 需要取的对象的个数
 
 @return 取得的对象构成的数组
 */
- (NSArray *)pop:(NSUInteger)numberOfElements;

/*!
 @method
 @abstract 连接两个数组
 @discussion 将传入的数组中的对象连接到自身末尾
 
 @param array 需要连接的对象的数组
 */
- (void)concat:(NSArray *)array;

/*!
 @method
 @abstract 从数组前端移除1个对象，然后将移除的对象返回
 @discussion 从数组前端移除1个对象，然后将移除的对象返回

 @return 数组前端第一个对象或者nil
 */
- (id)shift;

/*!
 @method
 @abstract 从数组前端移除指定数量的对象，然后将移除的对象构成数组返回
 @discussion 从数组前端移除指定数量的对象，然后将移除的对象构成数组返回
 
 @param numberOfElements 需要移除的数量
 
 @return 被移除的对象构成的数组
 */
- (NSArray *)shift:(NSUInteger)numberOfElements;

/*!
 @method
 @abstract 筛选一个数组，从block中判断对象是否保留，返回需要保留的对象构成的数组
 @discussion 筛选一个数组，从block中判断对象是否保留，返回需要保留的对象构成的数组

 @param block 在block中判断这个对象是否需要保留
 
 @return 所有需要保留的对象构成的数组
 */
- (NSArray *)keepIf:(BOOL (^)(id object))block;
@end
